// components/cart/cart.js

const helper = require('../../utils/hepler')

Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    totalPrice: 0,
    totalNUm: 0,
    hasData: false,   //判断购物车是否有数据
    cartList: []
  },
  /**
   * 生命周期函数--监听页面加载
   */
  ready() {
    if (wx.getStorageSync('cartList')) {
      var cartList = JSON.parse(wx.getStorageSync('cartList'));
      // console.log(cartList);
      this.setData({
        cartList: cartList,
        hasData: true
      })


      this.computedPriceNum();
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
      * 点击减少商品时
      */
    decCart(e) {
      //通过自定义的方法传值
      var index = e.currentTarget.dataset.id;

      var cartList = this.data.cartList;
      var num = cartList[index].num;/*获取当前索引值的数量*/
      if (num == 1) {
        wx.showModal({
          title: '提示',
          content: '您确定要删除这个商品吗?',
          success: (res) => {
            if (res.confirm) {
              cartList.splice(index, 1);
              //用到this注意this指向
              this.setData({
                cartList: cartList
              })
              //更新 storage里面购物车的数据
              wx.setStorageSync('cartList', JSON.stringify(cartList));
              //技术总数 与购物车的数量
              this.computedPriceNum();
            } else if (res.cancel) {
              console.log('用户点击取消')
            }
          }
        })
      } else {
        //商品的数量大于1  则减一
        cartList[index].num = num - 1;
        this.setData({
          cartList: cartList
        })
        //更新 storage里面购物车的数据
        wx.setStorageSync('cartList', JSON.stringify(cartList));
        //技术总数 与购物车的数量
        this.computedPriceNum();
      }
    },
    /**
     * 点击增加商品
     */
    incCart(e) {
      //获取传递过来的值
      var index = e.currentTarget.dataset.id;
      //得到data 里面的数据
      var cartList = this.data.cartList;
      //获取当前索引值的数量 并给其 加 一
      var num = cartList[index].num;
      cartList[index].num = num + 1;

      this.setData({
        cartList: cartList,
      })
      //更新 storage里面购物车的数据
      wx.setStorageSync('cartList', JSON.stringify(cartList));
      //技术总数 与购物车的数量
      this.computedPriceNum();
    },
    //计算总价和总数量的方法
    computedPriceNum() {

      var cartList = this.data.cartList;
      var allPrice = 0;
      var allNum = 0;

      for (var i = 0; i < cartList.length; i++) {
        allPrice += parseFloat(cartList[i].price) * cartList[i].num;
        allNum += parseFloat(cartList[i].num)
      }
      if (allNum > 0) {
        //有数据
        this.setData({
          totalPrice: allPrice,
          totalNum: allNum,
          hasData: true
        })
      } else {
        //没有数据
        this.setData({
          totalPrice: allPrice,
          totalNUm: allNum,
          hasData: false
        })
      }
    },
    //更新扫码
    doQcode() {
      var that = this;
      // 只允许从相机扫码
      wx.scanCode({
        onlyFromCamera: true,
        success: (res) => {
          // console.log(res.result);
          that.getProductInfo(res.result)
        }
      })
    },
    getProductInfo(qcode) {
      var that = this;
      //加载中动画
      wx.showLoading({
        title: '加载中...'
      })
      //get 请求数据
      wx.request({
        url: configs.apiUrl + 'api/getProduct',
        data: {
          qcode
        },
        header: {
          'content-type': 'application/json' // 默认值
        },
        success(res) {
          //关闭动画
          wx.hideLoading();
          //这里直接做判断处理扫码出现不完整的情况
          if (res.data.result.length > 0) {
            helper.addCart(res.data.result[0]);
            //获取
            var cartList = JSON.parse(wx.getStorageSync('cartList'));
            that.setData({
              cartList: cartList
            }, () => {
              this.computedPriceNum();
            })

          } else {
            //扫码错误 或者 数据库不存在此商品的价格
            wx.showToast({
              title: '此商品不存在',
              icon: 'error',
              duration: 3000
            })
          }
        },

      })
    },
    goOrder() {
      //不需要判断
      wx.navigateTo({
        url: '../order/order'
      })
    }
  }
})
